本发明提出一种哈希查找表的方法和装置,在存储表时,包括:规划出一主表存储空间,该主表存储空间又分为若干个地址空间;建立多个哈希函数,并利用该多个哈希函数对待存储信息的关键字进行哈希计算,得到多个索引值;比较该多个索引值对应的地址空间的空满程度,将该待存储信息存储至存储信息最少的地址空间。在查找表时,包括:使用已经建立的多个不同的哈希函数并行对待查找的关键字进行哈希计算,得到多个索引值,并行将该多个索引值对应的地址空间位置的表项的关键字与待查找的关键字进行匹配检索。采用本发明哈希查找表的方法和装置,可以节省哈希表的存储资源和提高哈希查找的效率。
1.一种哈希存储表的方法,其特征在于,包括:规划出一主表存储空间,该主表存储空间又分为若干个地址空间;建立多个哈希函数,并利用该多个哈希函数对待存储信息的关键字进行哈希计算,得到多个索引值;比较该多个索引值对应的地址空间的空满程度,将该待存储信息存储至存储信息最少的地址空间。
2.如权利要求1所述的哈希存储表的方法,其特征在于:还规划出一附属表存储空间;当判断出该多个索引值对应的地址空间均已满时,将该待存储信息存储至该附属表存储空间。
3.如权利要求2所述的哈希存储表的方法,其特征在于:该主表存储空间大小是根据关键字取值范围和实际需要的存储空间范围来设置的;该附属表存储空间大小是根据主表溢出情况来设置的。
4.如权利要求1所述的哈希存储表的方法,其特征在于:为该主表存储空间中的每个地址空间设置并维护一指示该地址空间空满程度的空满标志位;比较该多个索引值对应的地址空间的空满程度时,是通过比较该多个索引值对应的地址空间的空满标志位的取值来实现的。
5.一种哈希查找表的方法,其特征在于,包括:使用已经建立的多个不同的哈希函数并行对待查找的关键字进行哈希计算,得到多个索引值;并行将该多个索引值对应的地址空间位置的表项的关键字与待查找的关键字进行匹配检索。
6.如权利要求5所述的哈希查找表的方法,其特征在于:在获取到该多个索引值后,先判断该各索引值对应的地址空间的空满标志位,如果均为空,则认为查找失败;否则,从空满标志位为非空的存储空间位置预读存储表项的关键字,并将预读出的关键字与该待查找的关键字进行匹配检索。
7.如权利要求5或6所述的哈希查找表的方法,其特征在于:在根据该计算出的多个索引值进行查找均失败时,则在附属表中顺序查找表项的关键字并与该待查找的关键字进行匹配检索。
8.一种哈希表项建立装置,其特征在于,包括哈希运算模块、判断模块和信息存储模块,其中:哈希运算模块,用以建立多个哈希函数,并利用该多个哈希函数对待存储信息的关键字进行哈希计算,得到多个索引值;判断模块,用以在存储器上规划出一主表存储空间,该主表存储空间又分为若干个地址空间;为该主表存储空间中的每个地址空间设置并维护一指示该地址空间空满程度的空满标志位;以及根据哈希运算模块计算出的多个索引值查找哈希存储表,根据该多个索引值对应的地址空间的空满标志位取值来判断该各地址空间的空满程度,控制信息存储模块将该待存储信息存储至存储信息最少的地址空间;信息存储模块,用以在判断模块的控制下将待存储的信息存储至相应的哈希表项中。
9.如权利要求8所述的哈希表项建立装置,其特征在于:判断模块,还用以在存储器上规划出一附属表存储空间;以及在判断出该多个索引值对应的地址空间均已满时,控制信息存储模块将该待存储信息存储至该附属表存储空间。
10.如权利要求8所述的哈希表项建立装置,其特征在于:该主表存储空间大小是根据关键字取值范围和实际需要的存储空间范围来确定的;该附属表存储空间大小是根据主表溢出情况来确定的。
11.一种哈希表项查找装置,其特征在于,包括并行哈希运算模块、并行哈希查找模块,以及并行检索模块,其中:并行哈希运算模块,用以使用已经建立的多个不同的哈希函数并行对待查找的关键字进行哈希计算,得到多个索引值;并行哈希查找模块,用以并行查找哈希运算模块计算出的多个索引值在存储器中对应的地址空间中的表项,并完成表项中关键字信息的预读;并行检索模块,用以将并行哈希查找模块预读出的表项的关键字与该待查找的关键字进行并行匹配检索。
12.如权利要求11所述的哈希表项查找装置,其特征在于:并行哈希查找模块,用以在执行表项中关键字信息的预读之前,先并行判断并行哈希运算模块计算出的该多个索引值对应的地址空间的空满标志位,如果均为空,则认为查找失败;否则,从空满标志位为非空的存储空间位置预读存储表项的关键字。
13.如权利要求11所述的哈希表项查找装置,其特征在于,还包括顺序查找模块,其中:该顺序查找模块,用以在并行检索模块将并行哈希查找模块预读出的表项的关键字与该待查找的关键字进行并行匹配检索失败时,在附属表中顺序查找表项的关键字并与该待查找的关键字进行匹配检索。技术领域 本发明涉及网络通信领域,尤其涉及网络通信中哈希查找表的硬件实现问题。更具体地说,涉及一种哈希查找表的方法和装置。背景技术 在网络通信领域,查找表是必不可少的,例如查找MAC表,ARP表,MPLS标签表等,而哈希查找表是一种广泛应用的方法,其基本思想为:在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字和哈希表中一个唯一的存储地址相对应。而确定的对应关系f为对应的哈希函数,每次查找表时,通过哈希函数得到存储表项,提取表项的相关信息位,与查找的关键字匹配,根据匹配情况返回查找结果。在实际使用的情况中,关键字数值值域一般很大,而实际存储的空间很小,对应关系f无法实现关键字与存储地址的一一对应,多个关键字对应同一个存储地址,造成“哈希冲突”。目前的冲突解决方法主要从两个方面考虑:1,提高哈希函数的性能,使经过哈希函数计算后的哈希值最大程度上的均匀分布。例如专利号为CN200810225868的中国专利申请“具有单轮次抗碰撞散列函数的方法”,它就是以耦合映射格子为模型,采用浮点运算和比特操作相结合的方法,提高单轮次运算的复杂性来减少冲突,但是因为实际存储空间远小于哈希关键字的地址空间,冲突不可能避免,相反哈希函数操作复杂,反而会带来实现上的困难。2,发明冲突解决的方案,主流方案目前主要有两种:第一种是线性探索法,例如专利号为CN200710064368的中国专利申请“哈希表的操作方法和装置”,它就是对线性探索法进行了改进,采用向上和向下两个方向进行探索,探索时一次从外部RAM向CPU读入N个表项,以提高效率,但是在冲突剧烈时,查找的效率会急剧下降。第二种是增加存储空间,方法有建立冲突链,增加哈希桶,添加哈希表再次哈希等,例如专利号为CN200610008448的中国专利申请“一种改进的哈希方法进行查找的方法”,专利号为CN200610152578的中国专利申请“一种解决哈希冲突的方法和装置”,以及专利号为CN200710175544的中国专利申请“关键字存储查找方法和设备”都是采用上述几个方法的结合和改进。而这些发明同样存在着存储资源消耗相对较大,查找效率相对较低等问题。在网络通信中,信息的存储转发速率的要求越来越高,哈希表的查找处理速度的要求也越来越快,因此需要一种易于实现,查找迅速,资源消耗较少的哈希查找方法。现在相关的专利文献包括:专利号为CN200710049572的中国专利申请“一种哈希表的操作方法”和专利号为US20080034115的美国专利申请“Apparatusxa0Forxa0Handlingxa0Hashxa0Collisionsxa0Ofxa0Hashxa0Searchingxa0Andxa0MethodUsingxa0Thexa0Same”(运用相同的哈希查找方法解决哈希冲突的装置),其中:专利号为CN200710049572的中国专利申请存在以下的不足:一、该发明的应用采用主从式并行多核处理器,多核处理器的应用的复杂性造成了使用的局限性;二、该发明采用多个内存管理,也就是多张哈希存储表,这些存储表之间的信息交互等等问题该发明并没有说明。三、该发明并没有给出硬件的实现方式。专利号为US20080034115的美国专利申请存在以下的不足:该发明以硬件方式实现哈希查表,提出在哈希冲突时信息存储在CAM(ContentAddressablexa0Memory内容寻址存储器)中,查找时CAM和哈希表同时查找的方法,该发明硬件实现需要外挂CAM,需要添加CAM寻址接口,而且冲突剧烈时,信息集中在CAM中,造成了哈希表存储空间资源的浪费,无法体现效率和资源之间的公平性。
发明内容本发明的目的在于,克服现有技术实现哈希查找中存在的速度和哈希冲突的问题,提出一种以硬件方式实现抗冲突并行哈希表的建立查找的方法和装置,以节省哈希表的存储资源和提高哈希查找的效率。为解决上述技术问题,本发明提出一种哈希存储表的方法,包括:规划出一主表存储空间,该主表存储空间又分为若干个地址空间;建立多个哈希函数,并利用该多个哈希函数对待存储信息的关键字进行哈希计算,得到多个索引值;比较该多个索引值对应的地址空间的空满程度,将该待存储信息存储至存储信息最少的地址空间。进一步地,上述哈希存储表的方法还可具有以下特点:还规划出一附属表存储空间;当判断出该多个索引值对应的地址空间均已满时,将该待存储信息存储至该附属表存储空间。进一步地,上述哈希存储表的方法还可具有以下特点:该主表存储空间大小是根据关键字取值范围和实际需要的存储空间范围来设置的;该附属表存储空间大小是根据主表溢出情况来设置的。进一步地,上述哈希存储表的方法还可具有以下特点:为该主表存储空间中的每个地址空间设置并维护一指示该地址空间空满程度的空满标志位;比较该多个索引值对应的地址空间的空满程度时,是通过比较该多个索引值对应的地址空间的空满标志位的取值来实现的。为解决上述技术问题,本发明还提出一种哈希查找表的方法,包括:使用已经建立的多个不同的哈希函数并行对待查找的关键字进行哈希计算,得到多个索引值;并行将该多个索引值对应的地址空间位置的表项的关键字与待查找的关键字进行匹配检索。进一步地,上述哈希查找表的方法还可具有以下特点:在获取到该多个索引值后,先判断该各索引值对应的地址空间的空满标志位,如果均为空,则认为查找失败;否则,从空满标志位为非空的存储空间位置预读存储表项的关键字,并将预读出的关键字与该待查找的关键字进行匹配检索。进一步地,上述哈希查找表的方法还可具有以下特点:在根据该计算出的多个索引值进行查找均失败时,则在附属表中顺序查找表项的关键字并与该待查找的关键字进行匹配检索。为解决上述技术问题,本发明提出一种哈希表项建立装置,包括哈希运算模块、判断模块和信息存储模块,其中:哈希运算模块,用以建立多个哈希函数,并利用该多个哈希函数对待存储信息的关键字进行哈希计算,得到多个索引值;判断模块,用以在存储器上规划出一主表存储空间,该主表存储空间又分为若干个地址空间;为该主表存储空间中的每个地址空间设置并维护一指示该地址空间空满程度的空满标志位;以及根据哈希运算模块计算出的多个索引值查找哈希存储表,根据该多个索引值对应的地址空间的空满标志位取值来判断该各地址空间的空满程度,控制信息存储模块将该待存储信息存储至存储信息最少的地址空间;信息存储模块,用以在判断模块的控制下将待存储的信息存储至相应的哈希表项中。进一步地,上述哈希表项建立装置还可具有以下特点:判断模块,还用以在存储器上规划出一附属表存储空间;以及在判断出该多个索引值对应的地址空间均已满时,控制信息存储模块将该待存储信息存储至该附属表存储空间。进一步地,上述哈希表项建立装置还可具有以下特点:该主表存储空间大小是根据关键字取值范围和实际需要的存储空间范围来确定的;该附属表存储空间大小是根据主表溢出情况来确定的。为解决上述技术问题,本发明还提出一种哈希表项查找装置,包括并行哈希运算模块、并行哈希查找模块,以及并行检索模块,其中:并行哈希运算模块,用以使用已经建立的多个不同的哈希函数并行对待查找的关键字进行哈希计算,得到多个索引值;并行哈希查找模块,用以并行查找哈希运算模块计算出的多个索引值在存储器中对应的地址空间中的表项,并完成表项中关键字信息的预读;并行检索模块,用以将并行哈希查找模块预读出的表项的关键字与该待查找的关键字进行并行匹配检索。进一步地,上述哈希表项查找装置还可具有以下特点:并行哈希查找模块,用以在执行表项中关键字信息的预读之前,先并行判断并行哈希运算模块计算出的该多个索引值对应的地址空间的空满标志位,如果均为空,则认为查找失败;否则,从空满标志位为非空的存储空间位置预读存储表项的关键字。进一步地,上述哈希表项查找装置还可具有以下特点:还包括顺序查找模块,其中:该顺序查找模块,用以在并行检索模块将并行哈希查找模块预读出的表项的关键字与该待查找的关键字进行并行匹配检索失败时,在附属表中顺序查找表项的关键字并与该待查找的关键字进行匹配检索。相比较现有的哈希方法,本发明的技术方案带来的有益效果是:1、在本发明中,通过多哈希方法存储信息,减少了哈希冲突的发生率,提高了哈希表存储空间的利用率,从而节省了大量的存储资源;2、查找时采用并行哈希并行查找,并行哈希查找检索都可以严格意义上同时进行,互不干扰,查找效率非常高。3、使用者可以根据情况,动态的调整哈希函数的建立参数,哈希桶大小以及修改并行处理模块为串行处理,极大程度上保证了效率和资源的公平性。附图说明 图1是本发明的哈希存储表的存储结构示意图;图2是本发明提供硬件的模块示意图;图3是本发明的哈希表建立和信息存储实施示例的流程图;图4是本发明的哈希表查找实施示例的流程图。具体实施方式 下面将结合附图对本发明的实施方案进行详细介绍。如图1所示,本发明的哈希存储表的存储结构为二维结构,其中哈希存储表主表的地址空间为0~(N-1),即表地址0~(N-1),也就是每次哈希运算后得到的索引值0~(N-1)。每个地址空间存储K1个表项。每次信息存储按顺序先后填入表项即可。附属表只有一个地址空间,这个地址空间可以存储K2个表项,顺序存储主表中冲突溢出的信息。整个哈希存储表存放在硬件的存储器中。如图2所示,本发明的硬件电路包括哈希表项建立装置21和哈希表项查找装置22,其中:哈希表项建立装置21包括3个子模块:哈希运算模块211,判断模块212,信息存储模块213,其中:哈希运算模块211,用以建立多个哈希函数,并利用该多个哈希函数对待存储信息的关键字进行哈希计算,得到多个索引值。判断模块212,用以在存储器上规划出一主表存储空间,该主表存储空间又分为若干个地址空间;为该主表存储空间中的每个地址空间设置并维护一指示该地址空间空满程度的空满标志位;以及根据哈希运算模块211计算出的多个索引值查找哈希存储表,根据该多个索引值对应的地址空间的空满标志位取值来判断该各地址空间的空满程度,控制信息存储模块213将该待存储信息存储至存储信息最少的地址空间。进一步地,判断模块212,还用以在存储器上规划出一附属表存储空间;以及在判断出该多个索引值对应的地址空间均已满时,控制信息存储模块213将该待存储信息存储至该附属表存储空间。其中,该主表存储空间大小是根据关键字取值范围和实际需要的存储空间范围来确定的,该附属表存储空间大小是根据主表溢出情况来确定的。信息存储模块213,用以在判断模块212的控制下将待存储的信息存储至相应的哈希表项中。哈希表项查找装置22包括4个子模块:并行哈希运算模块221,并行哈希查找模块222,并行检索模块223,顺序查找模块224,其中:并行哈希运算模块221,用以使用已经建立的多个不同的哈希函数并行对待查找的关键字进行哈希计算,得到多个索引值。并行哈希查找模块222,用以并行查找哈希运算模块计算出的多个索引值在存储器中对应的地址空间中的表项,并完成表项中关键字信息的预读。进一步地,并行哈希查找模块222,用以在执行表项中关键字信息的预读之前,先并行判断并行哈希运算模块221计算出的该多个索引值对应的地址空间的空满标志位,如果均为空,则认为查找失败;否则,从空满标志位为非空的存储空间位置预读存储表项的关键字。并行检索模块223,用以将并行哈希查找模块222预读出的表项的关键字与该待查找的关键字进行并行匹配检索。该顺序查找模块224,用以在并行检索模块223将并行哈希查找模块222预读出的表项的关键字与该待查找的关键字进行并行匹配检索失败时,在附属表中顺序查找表项的关键字并与该待查找的关键字进行匹配检索。参见图3,该图示出了应用本发明建立哈希表和存储信息的方法流程,以双哈希运算为例,包括以下步骤:步骤301:提取存储信息中一个或多个有效信息位,组成存储信息的关键字,并将提取的关键字作为哈希函数的键值KEY;步骤302:根据实际需要表项的存储空间,预留哈希存储表的存储空间,包括主表和附属表空间;其中预留的主表存储空间与实际需要的存储空间,存在一个比值,这个比值反映的是哈希冲突允许的深度,附属表的空间大小反映了主表的溢出深度。步骤303:选取合适的哈希参数1并记录,建立对应的哈希函数H1;步骤304:选取合适的哈希参数2并记录,建立对应的哈希函数H2;建立哈希函数的方法可以是,例如,取关键字KEY=(MPLS标签+PORT号),数据宽度为20BITS,实际需要的1K个表项,选取的哈希表深度为4(常用选择),附属表地址空间为16,确保附属表无溢出;预留的存储空间为(4K+16)*表项空间,需要建立哈希函数使得H(KEY)=索引值=表地址,表地址取值范围在0-1K。选取两个质数使得数据宽度[KEY*质数]=数据宽度[乘积]=30,选取两个质数分别为523和521,乘积数据宽度达不到30位的高位补0。选取的质数数值为被存储在寄存器中以便查找中使用,这样便建立了两个哈希函数:H1(KEY)=KEY值的高10位^KEY值的中间10位^KEY值的低10位。其中,KEY=KEY*523,“^”为异或运算符;H2(KEY)=KEY值的高10位^KEY值的中间10位^KEY值的低10位。其中,KEY=KEY*521;“^”为异或运算符;步骤305:使用哈希运算模块211将键值KEY转化为索引值1;步骤306:使用哈希运算模块211将键值KEY转化为索引值2;步骤307:找到步骤305和步骤306计算得到的索引值对应的表地址,使用判断模块212查看两个索引值对应的表地址空满程度标识位,若任一空满标志位非满,则跳至步骤308,若两个空满标志位都为满则跳至步骤309;步骤308:比较两个地址对应的空满标志位值的大小,将信息存储在表地址空满程度标识较小的地址表项中,修改存储地址的空满标志位,跳至步骤310;步骤309:将该信息存储在附属表中,跳至步骤310;步骤310:信息是否存储结束,若结束跳至步骤311,没有结束跳至步骤305;步骤311:哈希表建立和信息存储过程结束。参见图4,该图示出了应用本发明查找哈希表的方法流程,以双哈希运算为例,包括以下步骤:步骤401:使用哈希函数H1将关键字转换为索引值1;步骤402:使用哈希函数H2将关键字转换为索引值2;步骤401与步骤402严格同步并发执行;步骤403:根据索引值1对应的表地址读相应的表地址空满程度标志位,判断表地址对应得表项空间是否为空,如果不为空,则跳至步骤405;若并行哈希查找,两个表地址都为空,才跳至步骤411;如果索引值1对应的表地址为空,而索引值2对应的表地址不为空的时候,结束对索引值1这侧的查找,但不认为查找失败;步骤404:根据索引值2对应的表地址读相应的表地址空满程度标志位,判断表地址对应得表项空间是否为空,如果不为空,则跳至步骤406;若并行哈希查找,两个表地址都为空,才跳至步骤411;如果索引值2对应的表地址为空,而索引值1对应的表地址不为空的时候,结束对索引值2这侧的查找,但不认为查找失败;步骤403与步骤404严格同步并发执行;步骤405:将表地址下的多个表项分别预读出来;步骤406:将表地址下的多个表项分别预读出来;步骤405与步骤406严格同步并发执行;步骤407:提取预读的表项的关键字,并匹配查找关键值KEY,若步骤405和步骤406中任一匹配成功,跳至步骤410,都没有匹配成功跳至步骤409;步骤408:同步骤407;步骤407与步骤408严格同步并发执行;步骤409:预读出附属表的表项,并查找检索若查找命中,跳至步骤410,否则跳至步骤411;步骤410:查找命中,查找结束。步骤411:查找失败,查找结束。当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,本领域技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。